home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2007 February
/
PCWorld_2007-02_cd.bin
/
domacnost a kancelar
/
avedesk
/
AveDesk13.exe
/
Effects
/
Slide.effectlet
< prev
Wrap
Extensible Markup Language
|
2005-03-15
|
7KB
|
271 lines
<?xml version="1.0" encoding="UTF-8"?>
<effectlet>
<info>
<name>Slide Effect Script</name>
<author>Dreadnaut</author>
<notes><![CDATA[ For bugs or anything else, contact me at dreadnaut@despammed.com ]]></notes>
<version>0.0.6</version>
</info>
<settings>
<param name="Debug" type="Boolean" defval="False"/>
</settings>
<preferences>
<preference name="HorizontalMovement" type="range" defval="0" min="-200" max="200">
Horizontal sliding of the desklet, expressed as a % of its width (Negative means left, positive right)
</preference>
<preference name="VerticalMovement" type="range" defval="75" min="-200" max="200">
Vertical sliding of the desklet, expressed as a % of its height (Negative means up, positive down)
</preference>
<preference name="Smoothness" type="range" defval="75" min="0" max="100">
Sets the smoothness of the animation
</preference>
<preference name="Speed" type="range" defval="5" min="1" max="9">
Sets the speed of the slide effect
</preference>
<preference name="Delay" type="range" defval="3" min="0" max="10">
Sets the delay (in seconds) after the desklet will start to slide back to its original position.
If WaitForMouseOut is set, the countdown will start after the mouse as left the desklet
</preference>
<preference name="StopOnMouseOut" type="range" defval="1" min="0" max="1">
If set, leaving the desklet while it's sliding will cause it to slide back to its original position
</preference>
<preference name="RebounceOnMouseIn" type="range" defval="1" min="0" max="1">
If set, the desklet will slide out again if touched while sliding back
</preference>
<preference name="WaitForMouseOut" type="range" defval="1" min="0" max="1">
If set, the desklet will wait for the mouse to leave its area before sliding back (eventually after Delay seconds)
</preference>
</preferences>
<images>
</images>
<script engine="vbScript"><![CDATA[
Dim Counter
Dim StartTop, StartLeft
Dim EndTop, EndLeft
Dim HMov, VMov, Step
Dim TickRate
Dim State
Dim PrefChange
Dim isOver
'These routines are the optional ones called by the framework
Sub OnCreate()
'Init
StartTop = Desklet.top
StartLeft = Desklet.left
Reset()
'Default preferences
HorizontalMovement = 0
VerticalMovement = 75
Smoothness = 75
Speed = 5
Delay = 3
StopOnMouseOut = 1
RebounceOnMouseIn = 1
WaitForMouseOut = 1
'And Reading overwrites them with some previous user changes
Preferences.ReadAll()
Evaluate()
End Sub
Sub OnMouseOn()
If State = 0 Then
StartLeft = Desklet.left
StartTop = Desklet.top
EvaluatePosition()
End If
If PrefChange = true Then
Evaluate()
End If
If (State = 0) Or ( (State = 2) And (RebounceOnMouseIn) ) Then
State = 1
Ticker.Interval = TickRate
Ticker.Enabled = True
End If
If (State = 3) And (WaitForMouseOut = 1) Then
Ticker.Enabled = false
End If
isOver = true
End Sub
Sub OnMouseout()
If (State = 1) And (StopOnMouseOut = 1) Then
State = 2
End If
If (State = 3) And (WaitForMouseOut = 1) Then
If Delay = 0 Then
State = 2
Ticker.Interval = TickRate
Else
Counter = Delay -1
Ticker.Interval = 1000
End If
Ticker.Enabled = true
End If
isOver = false
End Sub
'Function OnBeforeDraw(IsMouseOn, IsSelected, IsPreview)
'End Function
'Function OnAfterDraw(IsMouseOn, IsSelected, IsPreview)
'End Function
Sub OnSave()
Preferences.SaveAll
End Sub
'Optional. Indicates a preference change
Function OnPreferenceChange(Preference, oldValue, newValue)
Reset()
PrefChange = true
End Function
Sub Reset()
Ticker.Enabled = false
state = 0
isOver = false
Desklet.move StartLeft, StartTop
End Sub
Sub Evaluate()
EvaluatePosition()
'tickrate in [50 + 0 .. 50 + 200]
TickRate = 50 + cint(200 * (100 - Smoothness) / 100)
Step = 11 - Speed
PrefChange = false
End Sub
Sub EvaluatePosition()
EndLeft = StartLeft + cint(Desklet.width * HorizontalMovement / 100)
EndTop = StartTop + cint(Desklet.height * VerticalMovement / 100)
End Sub
'You can only have 1 Ticker per effectlet
'The OnTimer method is shielded against multiple entrance recursion
Sub OnTimer()
If State = 1 Then
If Desklet.left <> EndLeft Then
HMov = cint((EndLeft - Desklet.left)/abs(EndLeft - Desklet.left)) + cint((EndLeft - Desklet.left) / Step)
Else
HMov = 0
End If
If Desklet.top <> EndTop Then
VMov = cint((EndTop - Desklet.top )/abs(EndTop - Desklet.top )) + cint((EndTop - Desklet.top) / Step)
Else
VMov = 0
End If
End If
If State = 2 Then
If Desklet.left <> StartLeft Then
HMov = cint((StartLeft - Desklet.left)/abs(StartLeft - Desklet.left)) + cint((StartLeft - Desklet.left) / Step)
Else
HMov = 0
End If
If Desklet.top <> StartTop Then
VMov = cint((StartTop - Desklet.top)/abs(StartTop - Desklet.top)) + cint((StartTop - Desklet.top) / Step)
Else
VMov = 0
End If
End If
If (State = 1) Or (State = 2) Then
If (HMov <> 0) Or (VMov <> 0) Then
Desklet.Move Desklet.Left + HMov, Desklet.Top + VMov
Else
If State = 1 Then
Desklet.Move EndLeft, EndTop
State = 3
If (WaitForMouseOut = 0) Or (isOver = false) Then
If Delay = 0 Then
State = 2
Ticker.Interval = TickRate
Else
Counter = Delay -1
Ticker.Interval = 1000
End If
Ticker.Enabled = true
Else
Ticker.Enabled = false
End If
Else
Reset()
End If
End If
Else
If State = 3 Then
If Counter > 0 Then
Counter = Counter - 1
Else
State = 2
Ticker.Interval = TickRate
Ticker.Enabled = true
End If
End If
End If
'Desklet.Redraw()
End Sub
'Optional calls that we don't need for this script:
'Sub OnSelect()
'End Sub
'Sub OnDeselect()
'End Sub
'Sub OnShow()
'End Sub
'Sub OnHide()
'End Sub
'Sub OnConfigure()
'the configuration dialog with default UI for
'XML preferences will be shown.
'An additional dialog designer is on its way. It will
'extend the available default preferences of type:
' - slider, checkbox, combobox (builtin, v. 1.1, free on form with v. 1.2)
' - textbox, file browser, favorites URL (builtin and free on form, v. 1.2)
' - Any ocx (external, only free on form, v. 1.2)
'End Sub
Sub OnStartMove()
Reset()
End Sub
Sub OnEndMove()
StartTop = Desklet.top
StartLeft = Desklet.left
EvaluatePosition()
End Sub
'Sub OnLeftClick()
'End Sub
'Sub OnRightClick()
'End Sub
'Sub OnDestroy
'End Sub
]]></script>
</effectlet>